//package com.huawei.aw0;
//
//import com.alibaba.fastjson.JSONObject;
//import com.alibaba.fastjson.JSONPath;
//import com.huawei.hutaf.apitest.aw.*;
//
//import java.util.Arrays;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
//
//public class MessSpAwPerf {
//
//    /********************************************************************
//     * @Description 1.性能测试专用，Post请求,token或者cookie需要从外面传入，不然会直接对登陆压测(token校验/cookie+xCsrfToken+Referer校验)
//     * @param url 接口url
//     * @param params 接口入参
//     * @return 返回AWResponse
//     ********************************************************************/
//    public static AWResponse sendPostHttpRequest(Object mheader, String url, String params) {
//
//        /* 1.身份验证header(token/cookie) */
//        Map<String, List<String>> header = (Map<String, List<String>>) mheader;
//
//        /* 性能测试需要加上请求开始时间 */
//        Reporter.log("1#Time#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 2.执行Post请求 */
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            response = HttpClient.post(url.trim(), params.trim(), header);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#请求接口失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//        }
//
//        /* 性能测试需要加上请求结束时间 */
//        Reporter.log("1#EndTime#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 3.返回结果封装 */
//        AWResponse awResponse = new AWResponse();
//        awResponse.setResponseBody(responseBody);
//        awResponse.setResponseHeader(response.getHeaders().toString());
//        awResponse.setReturnCode(response.getStatusCode());
//        return awResponse;
//    }
//
//
////----------------------------------------------------------------------------------------------------------
////
////        FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
////
////        /* 3.打印日志、返回状态码和响应结果 */
////        // 3.1 打印日志（url、入参、响应体）
////        Reporter.log("1#请求地址#" + url, true);
////    Reporter.log("1#请求入参#" + params.trim(), true);
////        Reporter.log("1#响应结果#" + responseBody, true);
////
////// 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
////JSONObject body = new JSONObject();
////    body.put("url", url);
////    body.put("requestBody", params.trim());
////        body.put("responseBody", responseBody);
////
////// 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
////AWResponse awResponse = new AWResponse();
////    awResponse.setHeaders(response.getHeaders());
////        awResponse.setReturnCode(response.getCode());
////        awResponse.setResponseBody(body.toString());
////
////        /* 返回AWResponse对象 */
////        return awResponse;
////}
//
//    /********************************************************************
//     * @Description 2.性能测试专用，Get请求,token或者cookie需要从外面传入，不然会直接对登陆压测(token校验/cookie+xCsrfToken+Referer校验)
//     * @param url 接口url
//     * @param params 接口入参
//     * @return
//     * @throws Exception
//     ********************************************************************/
//    public static AWResponse sendGetHttpRequest(Object mheader, String url, String params) {
//
//        /* 1.身份验证header(token/cookie) */
//        Map<String, List<String>> header = (Map<String, List<String>>) mheader;
//
//        /* 性能测试需要加上请求开始时间 */
//        Reporter.log("1#Time#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 2.执行Get请求 */
//        // 2.1 url拼接
//        if (params.length() != 0) {
//            params = params.trim();
//            if (!params.startsWith("?")) {
//                params = "?" + params;
//            }
//        }
//
//        // 2.2 发送Get请求
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            response = HttpClient.get(url.trim(), header);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#请求接口失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//        }
//
//        /* 性能测试需要加上请求结束时间 */
//        Reporter.log("1#EndTime#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 3.打印日志、返回状态码和响应结果 */
//        // 3.1 打印日志（url、入参、响应体）
//        Reporter.log("1#请求地址#" + url, true);
//        Reporter.log("1#请求入参#" + params, true);
//        Reporter.log("1#响应结果#" + responseBody, true);
//
//        // 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
//        JSONObject body = new JSONObject();
//        body.put("url", url);
//        body.put("requestBody", params);
//        body.put("responseBody", responseBody);
//
//        // 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
//        AWResponse awResponse = new AWResponse();
//        awResponse.setHeaders(response.getHeaders());
//        awResponse.setReturnCode(response.getCode());
//        awResponse.setResponseBody(body.toString());
//
//        /* 返回AWResponse对象 */
//        return awResponse;
//    }
//
////----------------------------------------------------------------------------------------------------------
////
////        Reporter.log("1#请求入参#" + params.trim(), true);
////        Reporter.log("1#响应结果#" + responseBody, true);
////
////// 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
////JSONObject body = new JSONObject();
////        body.put("url", url);
////        body.put("requestBody", params.trim());
////        body.put("responseBody", responseBody);
////
////// 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
////AWResponse awResponse = new AWResponse();
////        awResponse.setHeaders(response.getHeaders());
////        awResponse.setReturnCode(response.getCode());
////        awResponse.setResponseBody(body.toString());
////
////        /* 返回AWResponse对象 */
////        return awResponse;
////    }
//
//    /********************************************************************
//     * @Description 1.性能测试专用，Put请求,token或者cookie需要从外面传入，不然会直接对登陆压测(token校验/cookie+xCsrfToken+Referer校验)
//     * @param url 接口url
//     * @param params 接口入参
//     * @return 返回AWResponse
//     ********************************************************************/
//    public static AWResponse sendPutHttpRequest(Object mheader, String url, String params) {
//
//        /* 1.身份验证header(token/cookie) */
//        Map<String, List<String>> header = (Map<String, List<String>>) mheader;
//
//        /* 性能测试需要加上请求开始时间 */
//        Reporter.log("1#Time#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 2.执行Put请求 */
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            response = HttpClient.put(url.trim(), params.trim(), header);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#请求接口失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//        }
//
//        /* 性能测试需要加上请求结束时间 */
//        Reporter.log("1#EndTime#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 3.打印日志、返回状态码和响应结果 */
//        // 3.1 打印日志（url、入参、响应体）
//        Reporter.log("1#请求地址#" + url, true);
//        Reporter.log("1#请求入参#" + params.trim(), true);
//        Reporter.log("1#响应结果#" + responseBody, true);
//
//        // 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
//        JSONObject body = new JSONObject();
//        body.put("url", url);
//        body.put("requestBody", params.trim());
//        body.put("responseBody", responseBody);
//
//        // 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
//        AWResponse awResponse = new AWResponse();
//        awResponse.setHeaders(response.getHeaders());
//        awResponse.setReturnCode(response.getCode());
//        awResponse.setResponseBody(body.toString());
//
//        /* 返回AWResponse对象 */
//        return awResponse;
//    }
//
////----------------------------------------------------------------------------------------------------------
////
////AWResponse awResponse = new AWResponse();
////        awResponse.setHeaders(response.getHeaders());
////        awResponse.setReturnCode(response.getCode());
////        awResponse.setResponseBody(body.toString());
////
////        /* 返回AWResponse对象 */
////        return awResponse;
////    }
//
//    /********************************************************************
//     * @Description 1.性能测试专用，Delete请求,token或者cookie需要从外面传入，不然会直接对登陆压测(token校验/cookie+xCsrfToken+Referer校验)
//     * @param url 接口url
//     * @param params 接口入参
//     * @return 返回AWResponse
//     ********************************************************************/
//    public static AWResponse sendDeleteHttpRequest(Object mheader, String url, String params) {
//
//        /* 1.身份验证header(token/cookie) */
//        Map<String, List<String>> header = (Map<String, List<String>>) mheader;
//
//        /* 性能测试需要加上请求开始时间 */
//        Reporter.log("1#Time#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 2.执行Put请求 */
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            response = HttpClient.delete(url.trim(), params.trim(), header);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#请求接口失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//        }
//
//        /* 性能测试需要加上请求结束时间 */
//        Reporter.log("1#EndTime#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 3.打印日志、返回状态码和响应结果 */
//        // 3.1 打印日志（url、入参、响应体）
//        Reporter.log("1#请求地址#" + url, true);
//        Reporter.log("1#请求入参#" + params.trim(), true);
//        Reporter.log("1#响应结果#" + responseBody, true);
//
//        // 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
//        JSONObject body = new JSONObject();
//        body.put("url", url);
//        body.put("requestBody", params.trim());
//        body.put("responseBody", responseBody);
//
//        // 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
//        AWResponse awResponse = new AWResponse();
//        awResponse.setHeaders(response.getHeaders());
//        awResponse.setReturnCode(response.getCode());
//        awResponse.setResponseBody(body.toString());
//
//        /* 返回AWResponse对象 */
//        return awResponse;
//    }
//
////----------------------------------------------------------------------------------------------------------
////
////header);
////responseBody = new String(response.getBody());
////        } catch (Exception var11) {
////        Reporter.log("1#请求接口失败#" + var11.getMessage(), true);
////printException("错误日志", var11);
////    }
////
////            // 性能测试需要加上请求结束时间
////            Reporter.log("1#EndTime#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
////
////        /* 3.打印日志、返回状态码和响应结果 */
////        // 3.1 打印日志（url、入参、响应体）
////        Reporter.log("1#请求地址#" + url, true);
////    Reporter.log("1#请求入参#" + params.trim(), true);
////        Reporter.log("1#响应结果#" + responseBody, true);
////
////// 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
////JSONObject body = new JSONObject();
////    body.put("url", url);
////    body.put("requestBody", params.trim());
////        body.put("responseBody", responseBody);
////
//
//    /// / 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
////AWResponse awResponse = new AWResponse();
////    awResponse.setHeaders(response.getHeaders());
////        awResponse.setReturnCode(response.getCode());
////        awResponse.setResponseBody(body.toString());
////
////        /* 返回AWResponse对象 */
////        return awResponse;
////}
////
////        ----------------------------------------------------------------------------------------------------------
////
////        * @Description 2.性能测试专用，下载请求,token或者cookie需要从外面传入，不然会直接对登陆压测(token校验/cookie+xCsrfToken+Referer校验)
////     * @param url 接口url
////     * @return
////             * @throws Exception
////     ********************************************************************/
//    public static AWResponse sendDownloadByGetHttpRequest(Object mheader, String url, String fileName, String isRange) {
//
//        /* 1.身份验证header(token/cookie) */
//        Map<String, List<String>> header = (Map<String, List<String>>) mheader;
//
//        /* 性能测试需要加上请求开始时间 */
//        Reporter.log("1#Time#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 2.执行Get请求 */
//
//        // 2.2 发送Get请求
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            boolean range = isRange == "TRUE" ? true : false;
//            response = HttpClient.downloadByGet(url.trim(), header, fileName, range);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#请求接口失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//        }
//
//        /* 性能测试需要加上请求结束时间 */
//        Reporter.log("1#EndTime#" + FunctionSet.getCurrentDate("yyyy-MM-dd HH:mm:ss.SSS"), true);
//
//        /* 3.打印日志、返回状态码和响应结果 */
//        // 3.1 打印日志（url、入参、响应体）
//        Reporter.log("1#请求地址#" + url, true);
//        Reporter.log("1#请求入参#" + "fileName: " + fileName + ", isRange: " + isRange, true);
//        Reporter.log("1#响应结果#" + responseBody, true);
//
//        // 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
//        JSONObject body = new JSONObject();
//        body.put("url", url);
//        body.put("requestBody", "fileName: " + fileName + ", isRange: " + isRange);
//        body.put("responseBody", responseBody);
//
//        // 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
//        AWResponse awResponse = new AWResponse();
//        awResponse.setHeaders(response.getHeaders());
//        awResponse.setReturnCode(response.getCode());
//        awResponse.setResponseBody(body.toString());
//
//        /* 返回AWResponse对象 */
//        return awResponse;
//    }
//
////----------------------------------------------------------------------------------------------------------
////
////        /* 3.打印日志、返回状态码和响应结果 */
////        // 3.1 打印日志（url、入参、响应体）
////        Reporter.log("1#请求地址#" + url, true);
////    Reporter.log("1#响应结果#" + responseBody, true);
////
////// 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
////JSONObject body = new JSONObject();
////    body.put("url", url);
////    body.put("responseBody", responseBody);
////
////// 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
////AWResponse awResponse = new AWResponse();
////    awResponse.setHeaders(response.getHeaders());
////        awResponse.setReturnCode(response.getCode());
////        awResponse.setResponseBody(body.toString());
////
////        /* 返回AWResponse对象 */
////        return awResponse;
////}
//
//    /********************************************************************
//     * @Description 账号密码登录 获取cookie（提取时使用cookie = $header.Set-Cookie）
//     * @param url 登录的url
//     * @param en_params 加密后的账号密码信息
//     * @return
//     ********************************************************************/
//    public static AWResponse loginRequest(String url, String en_params) {
//
//        /* 1.账号密码解密 */
//        String decrypt = CiphertextUtil.decrypt(en_params.trim());
//        String params = CiphertextUtil.getPureContent(decrypt);
//
//        /* 2.请求头 */
//        Map<String, List<String>> header = new HashMap();
//        header.put("Content-Type", Arrays.asList("application/json;charset=UTF-8"));
//
//        /* 3.执行Get请求 */
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            response = HttpClient.post(url.trim(), params.trim(), header);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#获取Cookie失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//        }
//
//        /* 3打印日志、返回状态码和响应结果 */
//        // 3.1 打印日志（url、入参、响应体）
//        Reporter.log("1#获取Cookie地址#" + url, true);
//
//        Reporter.log("1#获取Cookie入参#" + params.trim(), true);
//        //Reporter.log("1#获取Cookie响应#" + responseBody, true); //安全原因，禁止打印出cookie信息
//
//        // 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
//        JSONObject body = new JSONObject();
//        body.put("url", url);
//        body.put("requestBody", params);
//        body.put("responseBody", responseBody);
//
//        // 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
//        AWResponse awResponse = new AWResponse();
//        awResponse.setHeaders(response.getHeaders());
//        awResponse.setReturnCode(response.getCode());
//        awResponse.setResponseBody(body.toString());
//
//        /* 返回AWResponse对象 */
//        return awResponse;
//    }
//
////    ----------------------------------------------------------------------------------------------------------
////
////            body.put("url", url);
////    body.put("requestBody", params.trim());
////    body.put("responseBody", responseBody);
////
////    // 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
////    AWResponse awResponse = new AWResponse();
////    awResponse.setHeaders(response.getHeaders());
////    awResponse.setReturnCode(response.getCode());
////    awResponse.setResponseBody(body.toString());
////
////    /* 返回AWResponse对象 */
////    return awResponse;
////}
//
//    /********************************************************************
//     * @Description 获取x-csrf-token (提取时使用xCsrfToken = $header.x-csrf-token)
//     * @param url 获取x-csrf-token调用的接口url
//     * @return
//     * @throws Exception
//     ********************************************************************/
//    public static AWResponse getXCsrfToken(String url, String cookie, String referer) throws Exception {
//
//        /* 1.请求头 */
//        Map<String, List<String>> header = new HashMap();
//        header.put("Content-Type", Arrays.asList("charset=UTF-8"));
//        header.put("Cookie", Arrays.asList(cookie));
//
//        // 1.3.2 有Referer验证
//        if (!"".equals(referer) && referer != null) {
//            header.put("Referer", Arrays.asList(referer));
//        }
//
//        /* 2.执行Get请求 */
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            response = HttpClient.get(url.trim(), header);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#获取xCsrfToken失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//            throw var11;
//        }
//
//        /* 3.打印日志、返回状态码和响应结果 */
//        // 3.1 打印日志（url、入参、响应体）
//        Reporter.log("1#获取xCsrfToken地址#" + url, true);
//        Reporter.log("1#获取xCsrfToken入参#cookie: " + cookie + ", referer: " + referer, true);
//        Reporter.log("1#获取xCsrfToken响应#" + responseBody, true);
//
//        // 3.2 将url、请求体、响应体，添加到一个JSONObject对象里
//        JSONObject body = new JSONObject();
//        body.put("url", url);
//        body.put("requestBody", "cookie: " + cookie + ", referer: " + referer);
//        body.put("responseBody", responseBody);
//
//        // 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
//        AWResponse awResponse = new AWResponse();
//        awResponse.setHeaders(response.getHeaders());
//        awResponse.setReturnCode(response.getCode());
//        awResponse.setResponseBody(body.toString());
//
//        /* 返回AWResponse对象 */
//        return awResponse;
//    }
//
////----------------------------------------------------------------------------------------------------------
////
////        Arrays.asList(referer.trim()));
////        }
////
/////* 2.执行Get请求 */
////String responseBody = "";
////HttpClient.Response response = new HttpClient.Response();
////    try {
////response = HttpClient.get(url.trim(), header);
////responseBody = new String(response.getBody());
////        } catch (Exception var11) {
////        Reporter.log("1#获取xCsrfToken失败#" + var11.getMessage(), true);
////printException("错误日志", var11);
////    }
////
////            /* 3.打印日志 */
////            // 3.1 打印日志（url、响应体）
////            Reporter.log("1#获取xCsrfToken地址#" + url, true);
//////Reporter.log("1#获取xCsrfToken响应#" + responseBody, true); //安全原因，禁止打印出csrf token信息
////
////// 3.2 将url、响应体，添加到一个JSONObject对象里
////JSONObject body = new JSONObject();
////    body.put("url", url);
////    body.put("responseBody", responseBody);
////
////// 3.3 将header、code、及上述JSONObject添加到一个AWResponse对象
////AWResponse awResponse = new AWResponse();
////    awResponse.setHeaders(response.getHeaders());
////        awResponse.setReturnCode(response.getCode());
////        awResponse.setResponseBody(body.toString());
////
////        /* 返回AWResponse对象 */
////        return awResponse;
////}
////
////        ----------------------------------------------------------------------------------------------------------
//
//    /**
//     * @param url:       获取token的接口地址
//     * @param en_params: 加密的请求入参
//     * @return AWResponse awResponse: AW对象
//     * @Description 获取认证Token (处理token加密字符超长问题) (提取时使用token = $body)
//     ********************************************************************/
//    public static AWResponse getToken(String url, String en_params) {
//
//        /* 1.解密 */
//        String params = null;
//        if (en_params.contains("{")) {
//            //[{"appId": "com.huawei.supply.mes.mesplus.dem","credential": "xxxxxxx="}] 只对credential的value值进行加密，截取出加密字符串解密，再替换
//
//            en_params = en_params.trim();
//
//            int start = getIndexOf(en_params, "\"", 7); //引号第7次出现的位置
//            int end = en_params.lastIndexOf("\"");
//            //引号最后一次出现的位置
//
//            String token_en = en_params.substring(start + 1, end); //截取出加密的token
//
//            String decrypt = CiphertextUtil.decrypt(token_en);  //解密
//            String token_de = CiphertextUtil.getPureContent(decrypt);
//
//            params = en_params.replace(token_en, token_de);      //替换
//        } else {
//            //{"appId": "com.huawei.supply.mes.mesplus.dem","credential": "xxxxxxx="} 正常解密
//            params = CiphertextUtil.decrypt(en_params);
//        }
//
//        /* 2.请求头 */
//        Map<String, List<String>> header = new HashMap();
//        header.put("Content-Type", Arrays.asList("application/json;charset=UTF-8"));
//
//        /* 3.执行Post请求 */
//        String responseBody = "";
//        HttpClient.Response response = new HttpClient.Response();
//        try {
//            response = HttpClient.post(url.trim(), params, header);
//            responseBody = new String(response.getBody());
//        } catch (Exception var11) {
//            Reporter.log("1#获取Token失败#" + var11.getMessage(), true);
//            printException("错误日志", var11);
//        }
//
//        /* 4.打印日志、返回状态码和响应结果 */
//        // 4.1 打印日志（url、入参、响应体）
//        Reporter.log("1#获取Token地址#" + url, true);
//        Reporter.log("1#获取Token入参#" + params, true);
//        Reporter.log("1#获取Token响应#" + responseBody, true);
//
//        // 4.2 将url、请求体、响应体，添加到一个JSONObject对象里
//        JSONObject body = new JSONObject();
//        body.put("url", url);
//        body.put("requestBody", params);
//        body.put("responseBody", responseBody);
//
//        // 4.3 将header、code、及上述JSONObject添加到一个AWResponse对象
//        AWResponse awResponse = new AWResponse();
//        awResponse.setHeaders(response.getHeaders());
//        awResponse.setReturnCode(response.getCode());
//        awResponse.setResponseBody(body.toString());
//
//        /* 返回AWResponse对象 */
//        return awResponse;
//    }
//
/////**
//// * 查找第n次出现的位置
//// * @param srcText 源字符串
//// * @param findText 要查找的字符串
//// * @param num 第几次出现
//// * @return
//// */
////public static int getIndexOf(String srcText, String findText, int num) {
////    Pattern p = Pattern.compile(findText);
////    Matcher m = p.matcher(srcText);
////    int index = 0;
////    while (m.find()) {
////        index++;
////        if (index == num) {
////            return m.start();
////        }
////    }
////    return -1;
////}
////}
////
////        ----------------------------------------------------------------------------------------------------------
////
////        "com.huawei.supply.mes.mesplus.dem","credential":"xxxxxxx="} 整体加密，直接解密（现在这种的加密都会提示被加密字符串超长）
////String decrypt = CiphertextUtil.decrypt(en_params.trim());
////params = CiphertextUtil.getPureContent(decrypt);
////    }
////
/////* 2.设置信息头 */
////Map<String, List<String>> header = new HashMap<String, List<String>>();
////    header.put("Content-Type", Arrays.asList("application/json;charset=UTF-8"));
////
/////* 3.执行Post请求 */
////Response response = HttpClient.post(url, params, header);
////String responseBody = new String(response.getBody());
////String token = "";
////
/////* 4.提取token */
////    try {
////JSONObject jsonObject = JSONObject.parseObject(responseBody);
////token = jsonObject.getString("result");
////    } catch (JSONException var7) {
////        Reporter.log("1#获取Token失败#" + var7.getMessage(), true);
////printException("错误日志", var7);
////    }
////
////            /* 5.打印日志 */
////            // 5.1 打印日志（url、入参、响应体、已及响应体里的token）
////            Reporter.log("1#获取Token地址#" + url, true);
//////Reporter.log("1#获取Token信息#" + token, true);
//////Reporter.log("1#获取Token入参#" + params.trim(), true);
//////Reporter.log("1#响应结果#" + responseBody, true); //安全原因，禁止打印出token信息
////
////----------------------------------------------------------------------------------------------------------
////
////// 5.2 将header、code、及上述token添加到一个AWResponse对象
////AWResponse awResponse = new AWResponse();
////        awResponse.setHeaders(response.getHeaders());
////        awResponse.setReturnCode(response.getCode());
////        awResponse.setResponseBody(token);
////
/////* 返回AWResponse对象 */
////        return awResponse;
////    }
//
//    /**
//     * @param data 指定字符串
//     * @param str  需要定位的特殊字符或者字符串
//     * @param num  第n次出现
//     * @return 第n次出现的位置索引
//     */
//    public static int getIndexOf(String data, String str, int num) {
//        Pattern pattern = Pattern.compile(str);
//        Matcher findMatcher = pattern.matcher(data);
//        //标记遍历字符串的位置
//        int indexNum = 0;
//        while (findMatcher.find()) {
//            indexNum++;
//            if (indexNum == num) {
//                break;
//            }
//        }
//        return findMatcher.start();
//    }
//
/////**
//// * @Description: 异常打印
//// * @param key: 异常名称
//// * @param e: 异常信息
//// */
////public static void printException(String key, Exception e) {
////    StackTraceElement[] stackTrace = e.getStackTrace();
////    StringBuilder trace = new StringBuilder();
////    trace.append(key).append(":\n");
////    trace.append(e.toString()).append("\n");
////    for (StackTraceElement element : stackTrace) {
////        trace.append("\tat ").append(element).append("\n");
////    }
////    Reporter.log(trace.toString(), true);
////}
////}
////
////        ----------------------------------------------------------------------------------------------------------
////
////        e.getStackTrace();
////StringBuilder trace = new StringBuilder();
////        Stream.of(stackTrace).forEach((x) -> {
////        trace.append(x.toString()).append(System.lineSeparator());
////        });
////        Reporter.log("1#" + key + "#" + trace.toString(), true);
////        }
//
//    /********************************************************************
//     * @Description 从Json字符串里取出某一字段value值
//     * @param jsonStr 需要取值的json字符串
//     * @param documentStr JSONPath路径
//     * @return
//     ********************************************************************/
//    public static String getJsonValue(String jsonStr, String documentStr) {
//        String result = "";
//        try {
//            //先转换json为object格式，再使用eval方法取jsonPath值
//            JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//            Object output = JSONPath.eval(jsonObject, documentStr);
//
//            //直接使用read方法取jsonPath值
//            // Object output = JSONPath.read(jsonStr, documentStr);
//            result = JSONObject.toJSONString(output); //转化为String类型
//
//            if (result.startsWith("\"") && result.endsWith("\"")) {
//                result = result.substring(1, result.length() - 1);
//            }
//        } catch (Exception e) {
//            Reporter.log("1#解析JSON失败#" + e.getMessage() + "，jsonStr: " + jsonStr + "，documentStr: " + documentStr, true);
//            printException("解析JSON异常", e);
//        }
//        return result;
//    }
//}
//
////----------------------------------------------------------------------------------------------------------
////
////result = result.substring(1, result.length() - 1);  //去掉前后引号
////        }
////
////result = output != null ? result : "Json字符串里未找到\"" + documentStr + "\"对应的Value值，请确认JSONPath路径是否正确！";
////        Reporter.log("1#" + documentStr + "#" + result, true);
////    } catch (JSONPathException E) {
////result = "非法的jsonpath语法: " + documentStr;
////        E.printStackTrace();
////        Reporter.log("1#" + documentStr + "#" + result, true);
////    }
////            return result;
////}
////
/////********************************************************************
//// * @Description 导入指定数据到指定表
//// * @param url 数据库链接串
//// * @param us 账号
//// * @param ps 密码
//// * @param tableName 表名
//// * @param columnParams 字段列表
//// * @param dataParams 待插入数据
//// * @return
//// ********************************************************************/
////public static AWResponse importExcelOrSQLfileToDatabase(String url, String us, String ps, String tableName, String columnParams, String dataParams) {
////    AWResponse awResponse = new AWResponse();
////    int[] result = InsertDataToDatabase.insertToDatabase(url, us, ps, tableName, columnParams, dataParams);
////
////    ----------------------------------------------------------------------------------------------------------
////
////            * @param dataParams 待插入数据
////            * @return
////     ********************************************************************/
////    public static AWResponse importExcelOrSQLfileToDatabase(String url, String us, String ps, String tableName, String columnParams, String dataParams) {
////        AWResponse awResponse = new AWResponse();
////        int[] result = InsertDataToDatabase.insertToDatabase(url, us, ps, tableName, columnParams, dataParams);
////        awResponse.setResponseBody(String.valueOf(result));
////        return awResponse;
////    }
////}
////
//
